/*******************************************************************************
 * 版权：北京润尼尔网络科技有限公司，保留所有版权<br>
 * 版本：v1.0.0<br>
 * 文件：UICompositeCheckBoxTextTextBoxUnit.js<br>
 * 日期：2016年9月19日<br>
 * 作者: 杨顺强<br>
 * 功能：<br>
 * 
 * 修改记录：<br>
 * 日期 描述 更新功能<br>
 ******************************************************************************/

window.makeNamespace(window,"Rainier.UI.V2");

/**
 * 函数名称：Rainier.UI.V2.UICompositeCheckBoxTextTextBoxUnit<br>
 * 函数功能：div容器的构造函数定义<br>
 * 参数输入：<br>
 * 异常信息：<br>
 */
Rainier.UI.V2.UICompositeCheckBoxTextTextBoxUnit = Rainier.UI.V2.UIComposite.extend({
	
	NAME : "Rainier.UI.V2.UICompositeCheckBoxTextTextBoxUnit",
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeCheckBoxTextBoxUnit.init<br>
	 * 函数功能：初始化div容器对象<br>
	 * 参数输入：objParentComposite：UIComposite类型对象<br>
	 * 参数输入：objProperties ：div容器参数。该参数为对象
	 * {
	 * 	optionName  			 : "",	//参数名字
	 *  checkbox				 : true,//该参数为boolean类型，直接赋值为true。即可。
	 *	compositeComponent		 :		//自定义组件UICompositetextTextBoxOrComboBoxUnit，请参数格式如下：
	 * 		{
	 * 			optionName  : "",	//参数名字，optionName以外面参数为准，请与外层参数值使用同一个optionName。
	 *   		text		:
	 *   		{
	 *   			style:"",		//在text的样式，控制style的位置					
	 *   			text :"",		//该text的内容。
	 *   		},
	 * 			textbox 	: {},	//该参数为textbox或者为combobox。其参数配置信息参见easyUI中对应组件的Properties
	 * 			unit		: ""	//单位类型，该参数可有可无
	 * 		}
	 * }<br>
	 * 参数输出：<br>
	 * 函数返回：<br>
	 * 异常信息：未给参数名赋值<br>
	 */
	init : function(objParentComposite,objProperties){
		//当前组件中的内部组件
		this.checkBox 	 = null;
		this.textBox 	 = null;		//组合形成的组件,获取组合组件内部的textbox组件
		//当前组件中的配置参数信息
		if(objProperties.optionName){
			this.optionName = objProperties.optionName;
		}else{
			throw new Error("optionName 不能为空,必须为参数名赋值");
		}
		
		if(objProperties.checkbox){
			this.checkboxProperties = {};
		}else{
			throw new Error("checkbox 不能为空,请阅读init方法前的参数说明，严格按照参数信息完成初始化信息的配置");
		}
		
		if(objProperties.compositeComponent){
			this.compositeCompositeProperties = objProperties.compositeComponent; 
		}else{
			throw new Error("compositeComponent为必填参数，请阅读init方法前的参数说明，严格按照参数信息完成初始化信息的配置");
		}
		
		this._super(objParentComposite,objProperties);
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeCheckBoxTextBoxUnit.createComposite<br>
	 * 函数功能：创建div容器，完成div容器的创建工作<br>
	 * 参数输入：eleParent : 父元素节点<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	createComposite: function(eleParent){
		this._super(eleParent);		
		var newEle = this.CreateElement("div",this.m_objProperties.id,null,{style:"margin-left:10px;margin-top:10px;float:left;"});
		eleParent.append(newEle);
		
		//为该组件添加子组件
		this.checkBox 	 		= new Rainier.UI.V2.UICompositeCheckBox(this,this.checkboxProperties);
		var  compositeComponent = new 
				Rainier.UI.V2.UICompositeTextTextBoxOrComboBoxUnit(this,this.compositeCompositeProperties);
		compositeComponent.getElement().removeAttr("style");
		compositeComponent.getElement().css("float","left");
		
		this.textBox = compositeComponent.getTextBox();
		this.textBox.disable();
		
		var _this =this;
		//为checkBox添加点击事件
		this.checkBox.getElement().click(function(){
			_this.checkBox.getValue() ? _this.textBox.enable():_this.textBox.disable();
		});
	},
	
	/**
	 * 函数名称：<br>
	 * 函数功能：<br>
	 * 参数输入：<br>
	 * 参数输出：<br>
	 * 函数返回：<br>
	 * 异常信息：<br>
	 */
	getCheckBox : function(){
		return this.checkBox;
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeCheckBoxTextBoxUnit.getOptionName<br>
	 * 函数功能：获取参数名字<br>
	 * 参数输入：无<br>
	 * 参数输出：<br>
	 * 函数返回：组件参数名字<br>
	 * 异常信息：无<br>
	 */
	getOptionName : function(){
		return this.optionName;
	},
	
	/**
	 * 函数名称：<br>
	 * 函数功能：<br>
	 * 参数输入：<br>
	 * 参数输出：<br>
	 * 函数返回：<br>
	 * 异常信息：<br>
	 */
	getTextBox : function(){
		return this.textBox;
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeCheckBoxTextBoxUnit.getCheckboxValue<br>
	 * 函数功能：获取checkbox的value值，以判断checkbox是否被选中<br>
	 * 参数输入：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	getCheckboxValue : function(){
		return this.checkBox.getValue();
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeCheckBoxTextBoxUnit.getTextBoxValue<br>
	 * 函数功能：获取textbox的值<br>
	 * 参数输入：无<br>
	 * 函数返回：textbox中的数值<br>
	 * 异常信息：无<br>
	 */
	getTextBoxValue :function(){
		return this.textBox.getValue();			
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeCheckBoxTextBoxUnit.checkBoxValueChanged<br>
	 * 函数功能：当checkBox状态发生变化时，修改textbox的状态<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	checkBoxValueChanged : function(){
		if(this.checkBox){
			this.checkBox.getValue() ? this.textBox.enable():this.textBox.disable();
		}
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeCheckBoxTextBoxUnit.getComponentValueObj<br>
	 * 函数功能：获取div容器中的textbox的值,形成参数对象<br>
	 * 参数输入：无<br>
	 * 函数返回：div容器中的参数对象<br>
	 * 异常信息：无<br>
	 */
	getComponentValueObj : function(){
		var obj = {};
		optionName = this.optionName;
		obj[optionName] = null;
		
		var value = this.getTextBoxValue();
		
		obj[optionName] = value;
		return obj;
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeCheckBoxTextBoxUnit.setComponentValue<br>
	 * 函数功能：为组件赋值，当需要设置组件的值时，完成对组件值得设置<br>
	 * 参数输入：sValue ：String 组件的值<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	setComponentValue : function(sValue){
		if(this.checkBox.getValue()){			
			this.checkBox.getCheckBox().click();
		}
		this.textBox.setValue(sValue);
	},
	
	/**
	 * 函数名称：<br>
	 * 函数功能：<br>
	 * 参数输入：<br>
	 * 参数输出：<br>
	 * 函数返回：<br>
	 * 异常信息：<br>
	 */
	disable: function(){
		this.checkBox.disable();
		this.textBox.disable()
	},
	
	/**
	 * 函数名称：<br>
	 * 函数功能：<br>
	 * 参数输入：<br>
	 * 参数输出：<br>
	 * 函数返回：<br>
	 * 异常信息：<br>
	 */
	isValid : function(){
		return this.textBox.isValid();
	}
});


